#ifndef CONTROL_CLIENT_H
#define CONTROL_CLIENT_H

#include <open62541/client.h>

class ControlClient
{
public:
    explicit ControlClient();
    ~ControlClient();
    /**
     * @brief 设备断供电控制
     * @param supply_power true: 设备供电, false: 设备断电
     */
    void controlPowerSupply(bool supply_power);

    /**
     * @brief 发动机转速控制
     * @param speed 发动机转速
     */
    void controlEnginSpeed(float speed);

    /**
     * @brief 发动机油门使能
     * @param enable true: 油门使能， false: 油门禁止
     */
    void enableThrottleControl(bool enable);

    /**
     * @brief 左前行走速度控制
     * @param speed 左前轮速度
     */
    void controlLeftFrontSpeed(float speed);

    /**
     * @brief 左后行走速度控制
     * @param speed 左后轮速度
     */
    void controlLeftRearSpeed(float speed);

    /**
     * @brief 右前行走速度控制
     * @param speed 右前轮速度
     */
    void controlRightFrontSpeed(float speed);

    /**
     * @brief 右后行走速度控制
     * @param speed 右后轮速度
     */
    void controlRightRearSpeed(float speed);

    /**
     * @brief 读取发动机转速
     * @return float  发动机转速
     */
    float getEnginSpeed();

    /**
     * @brief 读取左前轮速度
     * @return float 左前轮线速度
     */
    float getEnginLeftFrontSpeed();

    /**
     * @brief 读取左后轮速度
     * @return float 左后轮线速度
     */
    float getEnginLeftRearSpeed();

    /**
     * @brief 读取右前轮速度
     * @return float 右前轮线速度
     */
    float getEnginRightFrontSpeed();

    /**
     * @brief 读取右后轮速度
     * @return float 右后轮线速度
     */
    float getEnginRightRearSpeed();

private:
    UA_Client *client _control_client;
    UA_UInt16 _ns_index;
};

#endif